/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package py.fpuna.ii.electiva2.facade;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.ejb.EJB;
import py.fpuna.ii.electiva2.dto.ProductoDTO;
import py.fpuna.ii.electiva2.dto.ProveedorDTO;
import py.fpuna.ii.electiva2.interfaces.CompraFacadeLocal;
import javax.ejb.Stateless;
import py.fpuna.ii.electiva2.dto.CompraDTO;
import py.fpuna.ii.electiva2.entity.Producto;
import py.fpuna.ii.electiva2.interfaces.CompraEAO;
import py.fpuna.ii.electiva2.interfaces.CompraFacadeRemote;
import py.fpuna.ii.electiva2.interfaces.ProductoEAO;
import py.fpuna.ii.electiva2.interfaces.ProveedorEAO;

/**
 *
 * @author Lauri
 */
@Stateless
public class CompraFacadeBean implements CompraFacadeLocal, CompraFacadeRemote {

    @EJB
    private ProveedorEAO provEao;

    @EJB
    private ProductoEAO prodEao;

    @EJB
    private CompraEAO compEao;

    public List<ProveedorDTO> listarProveedores() {
        List <ProveedorDTO> listProvRes = new ArrayList<ProveedorDTO>();
        listProvRes = provEao.findAll();
        return listProvRes;
    }

    public List<ProductoDTO> listarProductos(Integer provCode) {
        List <ProductoDTO> listProdRes = new ArrayList<ProductoDTO>();

        ProveedorDTO prov = provEao.find(provCode);

        Iterator <ProductoDTO> itprod = prov.getProductoCollection().iterator();
        
        while(itprod.hasNext()){

            ProductoDTO prod = itprod.next();
            listProdRes.add(prod);
        
        }
        return listProdRes;

    }

    public String createCompra(CompraDTO compradto,Integer codProducto){
        String retorno = "";
        try{
             CompraDTO compra = new CompraDTO();

             compra.setCompCantidad(compradto.getCompCantidad());
             compra.setCompProveedor(compradto.getCompProveedor());
             compra.setCompProducto(null);

             Producto prod = new Producto();
             prod = prodEao.findE(codProducto);


             //una compra siempre aumenta el stock
             Integer cant = prod.getProdCantidad()+ compra.getCompCantidad();
            

             if ((cant.compareTo(0)== 0) || (cant.compareTo(0)> 0)){

                  prod.setProdCantidad(cant);

                 if(compEao.create(compra,prod).equalsIgnoreCase("OK")){
                     retorno = "true";
                     prodEao.editE(prod);
                 }
                 
             }else{
                retorno = "false";
             }
      
        }catch(Exception e) {
            e.printStackTrace();
            retorno = "false";
        } finally {
            return retorno;
        }
    }
    
     public List<CompraDTO> listarComp() {
        List <CompraDTO> listRes = new ArrayList<CompraDTO>();
        listRes = compEao.findAll();
        return listRes;
    }




}
